const REMEMBER_MOUNT_PASSWORD_KEY = 'remember-mount-password';
/* ------ Common Utils ------- */
-function _setButtonsForChoices(dialog, choices) {
+function _setButtonsForChoices(dialog, oldChoices, choices) {
let buttons = [];
+ let buttonsChanged = oldChoices.length !== choices.length;
for (let idx = 0; idx < choices.length; idx++) {
let button = idx;
+
+ buttonsChanged = buttonsChanged || oldChoices[idx] !== choices[idx];
+
buttons.unshift({
label: choices[idx],
action: () => dialog.emit('response', button),
});
}
- dialog.setButtons(buttons);
+ if (buttonsChanged)
+ dialog.setButtons(buttons);
}
function _setLabelsForMessage(content, message) {
_init() {
super._init({ styleClass: 'mount-question-dialog' });
+ this._oldChoices = [];
+
this._content = new Dialog.MessageDialogContent();
this.contentLayout.add_child(this._content);
}
update(message, choices) {
_setLabelsForMessage(this._content, message);
- _setButtonsForChoices(this, choices);
+ _setButtonsForChoices(this, this._oldChoices, choices);
+ this._oldChoices = choices;
}
});
_init() {
super._init({ styleClass: 'processes-dialog' });
+ this._oldChoices = [];
+
this._content = new Dialog.MessageDialogContent();
this.contentLayout.add_child(this._content);
update(message, processes, choices) {
this._setAppsForPids(processes);
_setLabelsForMessage(this._content, message);
- _setButtonsForChoices(this, choices);
+ _setButtonsForChoices(this, this._oldChoices, choices);
+ this._oldChoices = choices;
}
});